package com.ruoyi.manage.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 智能匹配记录对象 cr_matching_record
 */
public class CrMatchingRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 记录ID */
    private Long recordId;

    /** 学生用户ID */
    @Excel(name = "学生用户ID")
    private Long userId;

    /** 社团ID */
    @Excel(name = "社团ID")
    private Long clubId;

    /** 招聘ID */
    @Excel(name = "招聘ID")
    private Long recruitmentId;

    /** 匹配评分（0-100） */
    @Excel(name = "匹配评分")
    private BigDecimal matchScore;

    /** 技能匹配分 */
    @Excel(name = "技能匹配分")
    private BigDecimal skillMatchScore;

    /** 兴趣匹配分 */
    @Excel(name = "兴趣匹配分")
    private BigDecimal interestMatchScore;

    /** 时间匹配分 */
    @Excel(name = "时间匹配分")
    private BigDecimal timeMatchScore;

    /** 其他因素分 */
    @Excel(name = "其他因素分")
    private BigDecimal otherFactorsScore;

    /** 匹配详情（JSON格式） */
    @Excel(name = "匹配详情")
    private String matchDetails;

    /** 推荐理由 */
    @Excel(name = "推荐理由")
    private String recommendationReason;

    /** 是否推荐（Y是 N否） */
    @Excel(name = "是否推荐", readConverterExp = "Y=是,N=否")
    private String isRecommended;

    // 关联查询字段
    /** 学生姓名 */
    private String studentName;

    /** 学号 */
    private String studentNo;

    /** 专业 */
    private String major;

    /** 社团名称 */
    private String clubName;

    /** 社团类型 */
    private String clubType;

    /** 招聘标题 */
    private String recruitmentTitle;

    /** 岗位名称 */
    private String positionName;

    /** 推荐等级 */
    private String recommendationLevel;

    public void setRecordId(Long recordId)
    {
        this.recordId = recordId;
    }

    public Long getRecordId()
    {
        return recordId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setClubId(Long clubId)
    {
        this.clubId = clubId;
    }

    public Long getClubId()
    {
        return clubId;
    }

    public void setRecruitmentId(Long recruitmentId)
    {
        this.recruitmentId = recruitmentId;
    }

    public Long getRecruitmentId()
    {
        return recruitmentId;
    }

    public void setMatchScore(BigDecimal matchScore)
    {
        this.matchScore = matchScore;
    }

    public BigDecimal getMatchScore()
    {
        return matchScore;
    }

    public void setSkillMatchScore(BigDecimal skillMatchScore)
    {
        this.skillMatchScore = skillMatchScore;
    }

    public BigDecimal getSkillMatchScore()
    {
        return skillMatchScore;
    }

    public void setInterestMatchScore(BigDecimal interestMatchScore)
    {
        this.interestMatchScore = interestMatchScore;
    }

    public BigDecimal getInterestMatchScore()
    {
        return interestMatchScore;
    }

    public void setTimeMatchScore(BigDecimal timeMatchScore)
    {
        this.timeMatchScore = timeMatchScore;
    }

    public BigDecimal getTimeMatchScore()
    {
        return timeMatchScore;
    }

    public void setOtherFactorsScore(BigDecimal otherFactorsScore)
    {
        this.otherFactorsScore = otherFactorsScore;
    }

    public BigDecimal getOtherFactorsScore()
    {
        return otherFactorsScore;
    }

    public void setMatchDetails(String matchDetails)
    {
        this.matchDetails = matchDetails;
    }

    public String getMatchDetails()
    {
        return matchDetails;
    }

    public void setRecommendationReason(String recommendationReason)
    {
        this.recommendationReason = recommendationReason;
    }

    public String getRecommendationReason()
    {
        return recommendationReason;
    }

    public void setIsRecommended(String isRecommended)
    {
        this.isRecommended = isRecommended;
    }

    public String getIsRecommended()
    {
        return isRecommended;
    }

    public String getStudentName()
    {
        return studentName;
    }

    public void setStudentName(String studentName)
    {
        this.studentName = studentName;
    }

    public String getStudentNo()
    {
        return studentNo;
    }

    public void setStudentNo(String studentNo)
    {
        this.studentNo = studentNo;
    }

    public String getMajor()
    {
        return major;
    }

    public void setMajor(String major)
    {
        this.major = major;
    }

    public String getClubName()
    {
        return clubName;
    }

    public void setClubName(String clubName)
    {
        this.clubName = clubName;
    }

    public String getClubType()
    {
        return clubType;
    }

    public void setClubType(String clubType)
    {
        this.clubType = clubType;
    }

    public String getRecruitmentTitle()
    {
        return recruitmentTitle;
    }

    public void setRecruitmentTitle(String recruitmentTitle)
    {
        this.recruitmentTitle = recruitmentTitle;
    }

    public String getPositionName()
    {
        return positionName;
    }

    public void setPositionName(String positionName)
    {
        this.positionName = positionName;
    }

    public String getRecommendationLevel()
    {
        return recommendationLevel;
    }

    public void setRecommendationLevel(String recommendationLevel)
    {
        this.recommendationLevel = recommendationLevel;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("recordId", getRecordId())
            .append("userId", getUserId())
            .append("clubId", getClubId())
            .append("recruitmentId", getRecruitmentId())
            .append("matchScore", getMatchScore())
            .append("skillMatchScore", getSkillMatchScore())
            .append("interestMatchScore", getInterestMatchScore())
            .append("timeMatchScore", getTimeMatchScore())
            .append("otherFactorsScore", getOtherFactorsScore())
            .append("matchDetails", getMatchDetails())
            .append("recommendationReason", getRecommendationReason())
            .append("isRecommended", getIsRecommended())
            .append("createTime", getCreateTime())
            .toString();
    }
}